Method and system for providing a modular server on USB flash storage

ABSTRACT

A method and system for providing a modular server-on-a-USB-flash-storage is disclosed. The server-on-a-USB-flash-storage is installed on a computing device. The method and system include providing USB interface logic, USB Local Control Program, a flash memory and a set of control button connectors, light emitting diodes (LED) connectors and a liquid crystal display (LCD) connector. The USB Local Control Program is coupled with the USB interface logic and the flash memory. The USB interface logic interacts with the computing device and allows computing device to detect the server board. The USB Local Control Program boots up the server and prepares the computing device for use as the server. The flash memory stores a server image for the server, which is provided to the computing device using the USB Local Control Program. The control button connectors allow the server to be turned on, shut down gracefully, or restored to its initial state, by a single press of buttons connected to these connectors. The LED and LCD connectors allow the system status to be displayed or shown.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 10/762,934, filed Jan. 21, 2004 now abandoned, which is acontinuation-in-part of U.S. patent application Ser. No. 10/002,652,filed Oct. 19, 2001 now U.S. Pat. No. 7,103,765 which are incorporatedherein by reference in their entireties.

FIELD OF THE INVENTION

The present invention relates to computer systems, and more particularlyto a method and system for providing a server on a generalized computingdevice.

BACKGROUND OF THE INVENTION

FIG. 1 depicts a generalized computing device (“computing device”) 10.The computing device 10 includes at least a CPU 12 and an optional massstorage 18, such as a hard disk. The computing device 10 may alsoinclude other features. The computing device depicted in FIG. 1 alsoincludes a memory 14 such as a flash memory, a display 16, aninput/output device 20 such as a keyboard, BIOS 22, a network interface24 and a bus interface 26. Communication to a network (not shown) iscarried out through the network interface 24. Similarly, communicationto any attached devices (not shown) can be carried out via the businterface 26. For example, the bus interface 26 could include interfacesfor PCI Express, SATA, Ethernet, Infiniband or other serial busconnectors.

The computing device 10 is capable of performing a variety of functions.It is often desirable to utilize the computing device 10 as a server. Aserver would include additional hardware and/or software that allows theserver to serve multiple users. Thus, the server would allow multipleusers to share resources, such as printers or the optional mass storage18 of the computing device 10.

There are a number of conventional methods for allowing the computingdevice 10 to be used as a server. In general, these conventional methodsinvolve obtaining server software and installing the software on thecomputing device 10. The user must then manually set up the desiredfunctions for the server. Alternatively, the computing device 10 couldbe specially built to function as a server. In either case, ensuringthat the computing device 10 can function as a server is expensive. Forexample, obtaining and installing server software on the computingdevice 10 or specially building the computing device 10 may cost between$500 and $5,000. Moreover, installing the software and tailoring thesystem to provide the desired individual functions requires asubstantial investment of time on the part of the user.

Purpose of Invention

As Universal Serial Bus (USB) becomes a standard communication interfaceon the PC and digital imaging device, USB-based flash storage systemstarts proliferating the consumer market. A traditional USB-based flashstorage system tends to include an USB Local Control Program, one ormore flash memory chips in addition to the USB connector. USB flashstorage becomes one of the most popular choices for external removablestorage due to its simplicity, high performance and reliability.

If the PC or computing device has the capability in its BIOS to bootfrom a USB flash storage, it opens up a possibility to incorporateserver functionality into a USB flash storage. The server is thusmodular and very portable. The actual storage drives on a server are nolonger needed to reside on the same physical space with the serveritself. It is able to decouple the server from the storage drivescompletely. The server or storage drives can each evolve or upgradeindependent to each other. Being able to easily hot swap the USB flashstorage from the PC or computing device, it brings great benefits inservice and support to the server itself.

Accordingly, what is needed is a system and method for cheaply andeasily allowing the computing device to be used as a server. The presentinvention addresses such a need.

SUMMARY OF THE INVENTION

The present invention provides a method and system for providing aserver on a computing device. The computing device includes at least aprocessor and an optional mass storage device. The method and systemcomprise providing bus interface logic, providing USB Local ControlProgram, a flash memory and, preferably, a set of control buttonconnectors, light emitting diodes (LED) connectors and a liquid crystaldisplay (LCD) connector. The USB Local Control Program is coupled withthe bus interface logic and the memory. The bus interface logicinteracts with the computing device and allows the computing device todetect the system. The USB Local Control Program boots up the server andprepares the computing device for use as the server. The memory stores aserver image for the server, which is provided to the computing deviceusing the USB Local Control Program. The control button connectors allowthe server to be turned on, shut down gracefully, or restored to itsinitial state, by a single press of buttons connected to theseconnectors. The LED and LCD connectors allow the system status to bedisplayed or shown.

According to the system and method disclosed herein, the presentinvention provides an inexpensive, easy to use mechanism for allowingthe computing device to be used as a server.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a conventional computing device.

FIG. 2 is a high level block diagram of a system in accordance with thepresent invention for allowing the computing device to be used as aserver.

FIG. 3 is a block diagram of one embodiment of the Local Control Programof the system in accordance with the present invention for allowing thecomputing device to be used as a server.

FIG. 4 is a diagram of one embodiment of the image of the server storedin the memory of the system in accordance with the present invention forallowing the computing device to be used as a server.

FIG. 5 is a more detailed block diagram of one embodiment of the othercontrol logic in the system in accordance with the present invention forallowing the computing device to be used as a server.

FIG. 6 is a flow chart of one embodiment of a method in accordance withthe present invention for utilizing the system in accordance with thepresent invention to allow the computing device to be used as a server.

FIG. 7 is a flow chart of one embodiment of a method for usingone-button shut down interrupt logic as a feature of the system inaccordance with the present invention for allowing the computing deviceto be used as a server.

FIG. 8 is a flow chart of one embodiment of a method for a shut downinterrupt routine in the system in accordance with the present inventionfor allowing the computing device to be used as a server.

FIG. 9 is a flow chart of one embodiment of a method for usingone-button Init interrupt logic as a feature of the system in accordancewith the present invention for allowing the computing device to be usedas a server.

FIG. 10 is a flow chart of one embodiment of a method for an Initinterrupt routine in the system in accordance with the present inventionfor allowing the computing device to be used as a server.

FIG. 11 is a flow chart of one embodiment of a method for usingone-button power on control logic as a feature of the system inaccordance with the present invention for allowing the computing deviceto be used as a server.

DETAILED DESCRIPTION

The present invention relates to computer systems, and more particularlyto a method and system for providing a server on a generalized computingdevice. The following description is presented to enable one of ordinaryskill in the art to make and use the invention and is provided in thecontext of a patent application and its requirements. Variousmodifications to the preferred embodiment and the generic principles andfeatures described herein will be readily apparent to those skilled inthe art. Thus, the present invention is not intended to be limited tothe embodiment shown but is to be accorded the widest scope consistentwith the principles and features described herein.

The present invention relates to an improvement in computer systems. Thefollowing description is presented to enable one of ordinary skill inthe art to make and use the invention and is provided in the context ofa patent application and its requirements. Various modifications to thepreferred embodiment will be readily apparent to those skilled in theart and the generic principles herein may be applied to otherembodiments. Thus, the present invention is not intended to be limitedto the embodiment shown, but is to be accorded the widest scopeconsistent with the principles and features described herein.

The present invention provides a method and system for providing amodular server on a board. The server-on-a-USB is installed on acomputing device. The method and system include providing bus interfacelogic, providing a USB Local Control Program, flash memory and,preferably, a set of control button connectors, light emitting diodes(LED) connectors and a liquid crystal display (LCD) connector. The USBLocal Control Program is coupled with the bus interface logic and theflash memory. The bus interface logic interacts with the computingdevice and allows computing device to detect the server board. The USBLocal Control Program boots up the server and prepares the computingdevice for use as the server. The flash memory stores a server image forthe server, which is provided to the computing device using the USBLocal Control Program. The control button connectors allow the server tobe turned on, shut down gracefully, or restored to its initial state, bya single press of buttons connected to these connectors. The LED and LCDconnectors allow the system status to be displayed or shown.

The present invention will be described in terms of a particularcomputing device and a system having certain components. However, one ofordinary skill in the art will readily recognize that this method andsystem will operate effectively for other computing devices and othersystems having other components performing substantially the samefunctions.

To more particularly illustrate the method and system in accordance withthe present invention, refer now to FIG. 2, depicting a high-level blockdiagram of a system 100 in accordance with the present invention forallowing the computing device to be used as a server. The system 100 isto be used in conjunction with a computing device such as the computingdevice 10. The system 100 includes bus interface logic 102, USB LocalControl Program 104, memory 106 and, in a preferred embodiment, othercontrol logic 108 and connectors 109. The components 102, 104, 106, 108and 109 of the system 100 are preferably integrated into a single boardthat can be plugged into the computing device 10.

The system 100 is also preferably used in conjunction with a systemhaving a generic user interface, such as Windows 2000® operating system.The system 100 attaches to the computing device 10 via the bus interfacelogic 102 and bus interface 103 of the system 100 and the bus interface26 of the computing device 10. In operation, the computing device 10detects the system 100 through the bus interface logic 102, using thebus protocols of the computing device 10. The USB Local Control Program104 boots up the server and prepares the computing device for use as theserver.

The memory 106 includes a server image 110 for the server being providedby the system 100. Preferably, the server image 110 is compressed andstored on the memory 106. The server image 110 is preferably loaded ontothe computing device 10 and boots up, as discussed below. Once bootedup, the server image 10 allows the computing device 10 to function as aserver. In addition, the system 100 also includes the other controllogic 108. In a preferred embodiment, the other control logic 108 ismanaged by the USB Local Control Program 104. The connectors 109preferably include an Init connector 112, a shut-down connector 114, apower control connector 116, a status LED connector 118, a DC power LEDconnector 120 and a LCD display connector 122. However, in anotherembodiment, the other control logic 108 could include other components.The connectors 109 can be coupled to LEDs (not shown) and an LCD display(not shown) for the board. The connectors 109 are controlled using theother control logic 108.

FIG. 3 depicts one embodiment of the Local Control Program 104. TheLocal Control Program 104 includes a system initialization and testingblock 130, a local Control Program run-time main program 132, an LCDdisplay driver 134, a memory driver 136, a shut-down interrupt serviceroutine 138, and an Init service routine 140. The drivers 134 and 136are used to drive the display 122 and the memory 106. The shut-downinterrupt service routine 138 and Init service routine 140 are used inconjunction with the other control logic 108 described below.

Referring to FIGS. 2 and 3, in operation, once the computing device 10detects the presence of the system 100, the Local Control Program 104 isactivated. The Local Control Program 104 preferably connects with theBIOS 22 and begins controlling the computing device 10. The LocalControl Program 104 preferably performs tests on the system 100 toensure that the system 100 can control the functions of the computingdevice 10 as desired. For example, the USB Local Control Program 104ensures that the display, memory and other input/output devices can becontrolled. For example, in a preferred embodiment, the hardwareidentification of the flash memory 106 is read to determine the size ofthe memory 106. The system initialization and testing block 130preferably performs the testing functions. An Ethernet MAC address ofthe computing device 10 is also preferably read to ensure that securityand personalization of the computing device 10 is preserved. In apreferred embodiment, an identification for the system 100 is read bythe USB Local Control Program 104 to determine a version of the system100. The USB Local Control Program 104 also preferably establishes aunique personalized key, discussed below. The USB Local Control Program104 establishes a boot-up sequence on the computing device 10. Thememory 106 is then mounted and boots up. The server image 110 is thenextracted from the memory 106 using the unique personalized key. Withoutthe key, the server image preferably cannot extract and utilize theserver image 110.

FIG. 4 is a diagram of one embodiment of the images for the serverstored in the memory 106. The server image 110 includes a default fieldconfigurable and field upgradeable bitmap image 141 of the other controllogic 108, an active field configurable and field upgradeable bitmapimage 142 of the other control logic 108, a default compressed serverimage 143, an active server image 144, a default flash drive boot-upimage 145 and an active flash drive boot-up image 146. The bitmaps 141and 142 indicate the default and actual (active) bitmap images for thecontrol logic to allow the server to track and utilize the control logic108.

The compressed server images 143 and 144 are the default and actual(active) server images for loading onto the computing device 10. Theactive server image 144 thus corresponds to the server image 110,depicted in FIG. 2, that is loaded onto the computing device. The flashdrive images 145 and 146 are the default and actual (active) boot-upimages of the flash memory 106.

Once the server image 110 is loaded on the computing device 10, thecomputing device 10 can function as a server. Furthermore, the defaultscan be restored, for example in an Init interrupt, described below inFIG. 10, using the defaults 141, 143 and 145. The shut-down interruptservice routine 138 and Init service routine 140 can optionally residein the server image of 110 as well.

FIG. 5 is a more detailed block diagram of one embodiment of the othercontrol logic 108 in the system 100 in accordance with the presentinvention for allowing the computing device to be used as a server. Theother control logic 108 includes a Local Control Program 104 addressdecode and control 150, a flash memory address decode and control 152,an LCD address decode and control 154, one button shut-down interruptlogic 156, ID, status and control decode 158 and one button Initinterrupt logic 160. These blocks are used to provide the additionalfunctions, described below, such as a one button shut down and Initinterrupt.

FIG. 6 is a flow chart of one embodiment of a method 200 in accordancewith the present invention for using the system 100. The method 200preferably commences after the computing device 10 has found the system100. The method 200 is described in the context of the componentsdepicted in FIGS. 1-5. Referring to FIGS. 1-6, the USB Local ControlProgram 104 is automatically coupled with the BIOS 22 of the computingdevice 10, via step 202. The USB Local Control Program 104 takes controlof the computing device 10, via step 204. The functions of the system100 are tested, via step 206.

It is determined whether the test(s) performed in step 206 indicate thatthe system 100 is functioning properly, via step 208. If not, then themethod 200 terminates, via step 220. If it is determined that the system100 runs properly, then the memory 106 is mounted on the computingdevice 10, via step 210. The boot up of the computing device 10 is thenperformed from the memory 106 that was just mounted, via step 212. Theserver image 110 is found, decompressed if necessary, via step 214. Itis determined whether the functions of the method 200 were properlyperformed, via step 216. If so, then control is passed to the server,via step 218. Otherwise, the method 200 ends at step 220.

Thus, the method 200 and system 100 allow the computing device 10 to beused as a server. Because most of the method 200 is performedautomatically, the user need not manually configure the computing device10. Instead, the user merely plugs in the board on which the system 100is integrated. Thus, the process used to allow a computing device 10 tobe used as a server is simplified. Moreover, the system 100 isrelatively inexpensive, often costing on the order of less than $25 inquantity. Thus, the computing device 10 can be turned into a serverrelatively cheaply and easily.

The system 100 also preferably uses the other controls 108 andconnectors 109 to provide other functions in the server. FIG. 7 depictsone embodiment of a method 220 for utilizing one button shut-downinterrupt logic 156 and the shut-down connector 114. The one buttonshut-down interrupt logic 156 waits for input, via step 222. In apreferred embodiment, the input includes a push button (not shown) beingdepressed for a particular time. It is determined whether shut-downinput was received, via step 224. If not then step 222 is returned to.Otherwise, clock sampling is performed to allow for hardware de-bounce,via step 226. It is determined whether the input was valid shut-downinput, via step 228. In a preferred embodiment, valid shut-down inputincludes the push button being depressed for a particular time.

If the input was not valid, then step 222 is returned to. Otherwise,further shut-down interrupts are inhibited, via step 230. Step 230ensures that the method 220 can be completed for the valid shut downinput already provided. A shut down interrupt to the server is thengenerated, via step 232. A method for generating such an interrupt isdescribed below with respect to FIG. 8. The main system power is thenshut down and the system 100 is put into stand-by mode, via step 234.Thus, the system 100 can be shut down using a single press of a button.A user can, therefore, shut down the server provided using the system100 relatively quickly and easily, through the use of a single button.

FIG. 8 is a flow chart of one embodiment of a method 240 for a shut downinterrupt routine in the system 100 in accordance with the presentinvention. The method 240 is preferably implemented in conjunction withthe one button shut-down interrupt logic 156. A shut-down interruptservice routine entry is provided, via step 242. A status port of thesystem 100 is read, via step 244. The status port of the system 100indicates whether a shut down is pending. It is determined whether ashut down is pending, via step 246. If not, then the method 240 isterminated, via step 254. Otherwise, a shut down sequence for the serveris initiated, via step 248. The server is then shut down, via step 250.The main power to the system 100 is then shut down and the system 100 isput into standby mode, via step 252. Thus, the system 100 can be shutdown relatively simply and easily.

FIG. 9 is a flow chart of one embodiment of a method 260 for usingone-button Init interrupt logic a feature of the system 100 inaccordance with the present invention. The method 260 is used inconjunction with the one button Init interrupt logic 160 and the Initconnector 112. The one button Init interrupt logic 160 waits forconnector input, via step 262. The connector input is preferably a pushbutton (not shown) being depressed. It is determined whether Init inputis received, via step 264. If not, step 262 is returned to. Otherwise,clock sampling is performed to allow for hardware de-bounce, via step266. It is determined whether the Init input received is valid, via step268. If not, step 262 is returned to. Otherwise, further Init interruptsare inhibited, via step 270. Step 270 ensures that the method 260 can becompleted for valid Init input already received. An Init interrupt tothe server is then generated, via step 272. The server is thus restoredto its default state using the method 260. The return to the defaultstate is preferably found in the default server image 143 residing onthe memory 106.

FIG. 10 is a flow chart of one embodiment of a method 280 for an Initinterrupt routine in the system 100 in accordance with the presentinvention. The method 280 is preferably used for performing the step 272of the method 260.

A Init interrupt service routine entry is provided, via step 282. Astatus port of the system 100 is read, via step 284. The status port ofthe system 100 indicates whether an initialization is pending. It isdetermined whether an initialization is pending, via step 286. If not,then the method 280 is terminated, via step 290. Otherwise, the serveris restored to its default state, via step 288. Thus, the system 100 canbe initialized relatively simply and easily, by a push of a button by auser.

FIG. 11 is a flow chart of one embodiment of a method 300 for usingone-button shut down and power on control logic as a feature of thesystem 100. The method 300 is preferably performed using the power oncontrol connector 116 and the shut-down connector 114. The power controlconnector (not shown) of the computing device 10 is coupled with apower-on connector 116, via step 302. The AC power to the system 100 isthen turned on, the DC power to the system 100 turned off, and theserver of the system 100 placed in standby mode, via step 304. It isdetermined whether the shut-down button has been depressed, via step306. If not, step 306 is returned to.

Otherwise, DC power for the system 100 is turned on and the system 100boots up, via step 308. It is then determined whether power is to bedisabled, via step 310. If so, then the power on is asserted, via step314 and the system DC power turned off via step 324. If power is not tobe disabled, then it is determined whether the shut-down interrupt is tobe enabled, via step 312. If not, it is determined whether the shut-downbutton has been pressed, via step 322. If so, then the system DC poweris turned off, via step 324. Otherwise, the method returns to step 310.If it is determined in step 312 that the shut-down interrupt is to beenabled, power on is de-asserted, via step 316. It is then determinedwhether the shut-down button has been pressed, via step 318. Preferably,step 318 determines whether the shut-down button has been pressed for aparticular amount of time. If not, then the method returns to step 310.Otherwise, the shutdown input is generated, via step 320 and step 310returned to.

Thus, using the method 300, the shut-down button can be used indifferent ways. If the shut down button is pressed prior to a shut-downinterrupt being enabled, then the method 300 allows the DC power to thesystem 100 to be turned off. If, however, the shutdown interrupt wasenabled, as determined in step 312, prior to the shut-down button beingpressed, then the shut down input generated in step 320 and the system100 can be shut down using the method 220. Thus, using the method 300,the shut-down button can be used either to turn off the DC power to thesystem or to shut down the system 100. Thus, using the methods 220, 240,260, 280 and 300, additional functions can be provided using the system100.

A method and system has been disclosed for allowing a computing deviceto be used as a server. Software written according to the presentinvention is to be stored in some form of computer-readable medium, suchas memory, CD-ROM or transmitted over a network, and executed by aprocessor. Consequently, a computer-readable medium is intended toinclude a computer readable signal which, for example, may betransmitted over a network.

Accordingly, a system and method in accordance with the presentinvention applies to a variety of mass storage devices such as SerialATA FLASH hard drive, IDE FLASH hard drive, SCSI FLASH hard drive andEthernet FLASH hard drive. In addition, a FLASH controller in accordancewith the present invention also applies to FLASH memory cards such asExpress Card, Mini PCI Express Card, Secure Digital Card, Multi MediaCard, Memory Stick Card and Compact FLASH card. Finally, a system inaccordance with the present invention also applies to the other serialbuses such as PCI Express bus, Serial ATA bus, IEEE 1394 bus andEthernet bus. Accordingly, many modifications may be made by one ofordinary skill in the art without departing from the spirit and scope ofthe appended claims.

Although the present invention has been described in accordance with theembodiments shown, one of ordinary skill in the art will readilyrecognize that there could be variations to the embodiments and thosevariations would be within the spirit and scope of the presentinvention. Accordingly, many modifications may be made by one ofordinary skill in the art without departing from the spirit and scope ofthe appended claims.

What is claimed is:
 1. A system for providing a server-on-a-UniversalSerial Bus (USB) for a computing device, the system comprising: a businterface logic to interface the computing device with the system, thebus interface logic allowing the computing device to communicate withthe system; a memory for storing a server image and a USB local controlprogram, said USB local control program enabling the computing device tobe used as a server and booting up said server, the server image beingprovided from said memory to the computing device by means of the USBlocal control program, the USB local control program providing aplurality of server images for creating different server environments,the plurality of server images including a default field configurableand field upgradeable bitmap image of a first control logic, an activefield configurable and field upgradeable bitmap image of the firstcontrol logic, the default field configurable and field upgradeablebitmap image and the active field configurable and field upgradeablebitmap image allows the server to track and utilize the first controllogic, a default compressed server image, an active server image, adefault flash drive boot-up image, and an active flash boot-up image;and the first control logic coupled to the bus interface logiccomprising bus control logic, flash memory control logic, interruptlogic, status and control decode logic, and display control logic.